package cn.itcast.nems.payment.dto;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 支付回调报文实体
 *
 * @author ChangLu.Gao
 * @version v1.0
 * @program nems-server
 * @description
 * @date 2023/11/20 14:09
 */
@Data
public class PaymentCallbackDTO {
    /**
     * 验签
     */
    private String sign;

    /**
     * 应用ID
     */
    @JSONField(name = "app_id")
    private String appId;

    /**
     * 时间戳
     */
    private String timestamp;

    /**
     * 业务参数
     */
    @JSONField(name = "biz_params")
    private String bizParams;
    /**
     * 业务参数
     */
    private BizParams bizDto;

    @Data
    public static class BizParams {
        /**
         * 子订单信息
         */
        @JSONField(name = "sub_order")
        private String subOrder;
        /**
         * 子订单信息
         */
        private SubOrder subOrderDto;
        /**
         * 订单状态
         */
        @JSONField(name = "order_status")
        private String orderStatus;
        /**
         * 总金额
         */
        @JSONField(name = "total_amount")
        private BigDecimal totalAmount;
        /**
         * 订单号
         */
        @JSONField(name = "merchant_order_no")
        private String merchantOrderNo;
        /**
         * 主订单号
         */
        @JSONField(name = "main_order_no")
        private String mainOrderNo;
        /**
         * 支付类型 1. 培训收入 2.押金 3.电脑使用费
         */
        private String incomeExpensesType;
    }

    @Data
    public static class SubOrder {
        /**
         * 子订单号
         */
        @JSONField(name = "sub_order_no")
        private String subOrderNo;
        /**
         * 支付方式
         */
        @JSONField(name = "pay_method_code")
        private String payMethodCode;
        /**
         * 支付方式
         */
        @JSONField(name = "pay_method_name")
        private String payMethodName;
        /**
         * 立减金额
         */
        @JSONField(name = "discount_amount")
        private BigDecimal discountAmount;
        /**
         * 支付终端
         */
        @JSONField(name = "pay_terminal")
        private String payTerminal;
        /**
         * 货币
         */
        private String currency;
        /**
         * 订单金额
         */
        private BigDecimal amount;
        /**
         * 支付金额
         */
        @JSONField(name = "pay_amount")
        private BigDecimal payAmount;
        /**
         * 支付时间
         * 格式: yyyy-MM-dd HH:mm:s
         */
        @JSONField(name = "payment_time")
        private String paymentTime;
        /**
         * 子订单状态, 成功:"SUCCESS"
         */
        @JSONField(name = "sub_order_status")
        private String subOrderStatus;
    }
}
